package mongo
//
//import (
//    "errors"
//    "github.com/kylelemons/go-gypsy/yaml"
//    "gopkg.in/mgo.v2"
//    _ "log"
//    _ "os"
//    "server.factory/common"
//    "sync"
//)
//
//type DBSession struct {
//    db_session *mgo.Session
//    database   *mgo.Database
//    Collection *mgo.Collection
//}
//
//var MongoDB  *DBSession
//
//var once  sync.Once
//
///**
// * 自动调用，声明DB连接
// */
//func init() {
//    //logger := log.New(os.Stdout,"[mongodb]",log.Ldate|log.Ltime)
//    //mgo.SetLogger(logger)
//    mgo.SetDebug(false)
//    once.Do(mongoDB)
//}
//
//// 设置mongo链接信息
//func mongoDB() {
//    config, err := yaml.ReadFile(common.ServerConfigFilePath + "conf.yaml")
//    if err != nil{
//        panic(err)
//    }
//    db_address,err := config.Get("db_address")
//    if err != nil{
//        panic(err)
//    }
//    db_port,err := config.Get("db_port")
//
//    if err != nil{
//        panic(err)
//    }
//    db_mastername,err := config.Get("db_mastername")
//
//    if err != nil{
//        panic(err)
//    }
//    db_session,err := mgo.Dial(db_address+":"+db_port+"?maxPoolSize=10")
//    if err != nil{
//        panic(err.Error()+"_"+db_address+"_"+db_port)
//    }
//    db_session.SetMode(mgo.Monotonic,true)
//    //db_session.SetPoolLimit(5)
//    MongoDB = &DBSession{}
//    MongoDB.db_session = db_session
//    MongoDB.SetDatabase(db_mastername)
//
//}
//
//
//// 设置mongo数据库
//func (db *DBSession)SetDatabase(_database string) error{
//    if db == nil {
//        return errors.New("mongodb not exits")
//    }
//    if db.database != nil {
//        db.database.DropDatabase()
//    }
//    database := db.db_session.DB(_database)
//    db.database = database
//    return nil
//}
//// 设置mongo集合
//func (db *DBSession)SetCollection(collection string) error {
//    if db.database == nil {
//        return errors.New("database not exits")
//    }
//    if db.Collection != nil &&db.Collection.Name == collection {
//        return nil
//    }
//
//    coll := db.database.C(collection)
//    db.Collection = coll
//    return nil
//}
//
//// 查询数据
//func (db *DBSession)FindByMap(query interface{})  {
//    db.Collection.Find(query )
//}
//// 删除数据
//func (db *DBSession)Delete(selector interface{})  {
//    db.Collection.Remove(selector)
//}
//// 获取最新的mongo链接session
//func (db *DBSession)GetNewSession() (DBSession *mgo.Session,err error)  {
//    if db.database == nil {
//        err = errors.New("database not exits")
//        return
//    }
//
//    DBSession = db.database.Session.Copy()
//    return
//}
//
//// 更改mongo集合
//func (db *DBSession)GetNewCollection(session *mgo.Session,collection string) (coll *mgo.Collection,err error ) {
//    if(db.database == nil){
//        err = errors.New("database not exits")
//        return
//    }
//
//    database := session.DB(db.database.Name)
//    coll = database.C(collection)
//
//    return
//}